home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 5 / The 640 Meg Shareware Studio CD-ROM Volume V (Data Express)(1994).ISO / amiga / tdemo2.lha / ProgrammersInfo / DSKEL-XS.c < prev    next >
C/C++ Source or Header  |  1994-06-05  |  7KB  |  254 lines

  1. /*
  2.                             DSKEL-XS v1.1
  3.  
  4.                        (Xpress User Stats DOOR)
  5.  
  6.                        1         2         3
  7.              (123456789012345678901234567890123456789)
  8. Conf Access : XX_X____X___s__sX______X______________X
  9. Caller Num. : 100888
  10. 1st Date On : 22 Apr 91
  11. Lst Date On :  7 Mar 92
  12. Security Lv : 255
  13. # Times On  : 1123        Today : 4
  14. Msgs Posted : 1500        Today : 0
  15. File Ratio  : Disabled
  16. Byte Ratio  : Disabled
  17. # Downloads : 71          Today : 0
  18. # Uploads   : 85          Today : 0
  19. Bytes DL'd  : 137936061   Today : 39994
  20. Bytes UL'd  : 8089329     Today : 4433
  21. Online Baud : 14400
  22. Screen Clear: On
  23. Time Bar    : Off
  24. Bytes Avail : 3000000
  25.  
  26.  
  27. */
  28. //**********************
  29. //*****  Includes  *****
  30. //**********************
  31.  
  32. #include <proto/all.h>
  33. #include <stdio.h>
  34. #include <stdlib.h>
  35. #include <time.h>
  36.  
  37. #include <stdarg.h>
  38. #include <string.h>
  39. #include <tempest/headers.h>
  40.  
  41. //********************************
  42. //*****  Structures/Defines  *****
  43. //********************************
  44.  
  45.  
  46. int  DoorStart(TEXT *);
  47. VOID GetStr(TEXT *,int);
  48. VOID pl(TEXT *,...);
  49. int  DOORIO(VOID);
  50. VOID CloseStuff(VOID);
  51.  
  52.  
  53.  struct MyMessage
  54.   {
  55.    struct Message Msg; // for Exec message routines
  56.    ULONG  Command;     // Command to be executed.
  57.  
  58.    char   *text1,
  59.           *text2,
  60.           *text3;
  61.    int    Value1,
  62.           Value2;
  63.    ULONG  LongValue;
  64.    LONGBITS Flags;
  65.    int    carrier;
  66.    struct User       *User;             // Pointers!
  67.    struct SystemData *SystemData;
  68.    struct NodeData   *NodeData;
  69.    struct Today      *Today;
  70.   };
  71.  
  72. struct MsgPort *MyPort = NULL;
  73. struct MyMessage *msg;
  74. struct MyMessage send;
  75. struct User *User;
  76.  
  77. char MyName[60],st[60];
  78.  
  79. //******************
  80. //*****  Main  *****
  81. //******************
  82.  
  83. main(int argc,char *argv[])
  84. {
  85.  char string[200],string1[200];
  86.  char Day[5],Month[5],Year[5];
  87.  register int x=1;
  88.  if(!DoorStart(argv[1])) { PutStr("DSKEL-XS v3.15 [Xpress Stats]\n"); exit(0); }
  89.  strcpy(string,User->MsgBase);
  90.  do
  91.   {
  92.    if(string[x] == 'N') string[x] = '_';
  93.    else if(string[x] == 'S') string[x] = 's';
  94.      else string[x] = 'X';
  95.    x++;
  96.   }
  97.  while(x < 40);
  98.  strmid(string,string1,2,39);
  99.  pl("\f\r\n                       1         2         3\r\n");
  100.  pl("             (123456789012345678901234567890123456789)\r\n");
  101.  pl("Conf Access : %s\r\n",string1);
  102. //********************************************************************
  103.  GetStr(string1,95);
  104.  pl("Caller Num. : %s\r\n",string1);
  105. //********************************************************************
  106.  strcpy(string,ctime(&User->Time_First_Called));
  107.  strmid(string,Month,5,3);
  108.  strmid(string,Day,9,2);
  109.  strmid(string,Year,23,2);
  110.  pl("1st Date On : %2s %s %s\r\n",Day,Month,Year);
  111. //********************************************************************
  112.  strcpy(string,ctime(&User->Time_Last_Logoff));
  113.  strmid(string,Month,5,3);
  114.  strmid(string,Day,9,2);
  115.  strmid(string,Year,23,2);
  116.  pl("Lst Date On : %2s %s %s\r\n",Day,Month,Year);
  117. //********************************************************************
  118.  pl("Security Lv : %d\r\n",User->Security);
  119. //********************************************************************
  120.  pl("# Times On  : %-5d       Today : %d\r\n",User->Total_Calls,User->Period_Calls);
  121. //********************************************************************
  122.  pl("Msgs Posted : %-5d       Today : %d\r\n",User->Total_Posts,User->Period_Posts);
  123. //********************************************************************
  124.  if(User->F_Ratio==0) strcpy(string1,"Disabled");
  125.  else                sprintf(string1,"%d/1",User->B_Ratio);
  126.  pl("File Ratio  : %s\r\n",string1);
  127. //********************************************************************
  128.  if(User->B_Ratio==0) strcpy(string1,"Disabled");
  129.  else                sprintf(string1,"%d/1",User->B_Ratio);
  130.  pl("Byte Ratio  : %s\r\n",string1);
  131. //********************************************************************
  132.  pl("# Downloads : %-4d        Today : %d\r\n",User->Total_DLFiles,User->Period_DLFiles);
  133. //********************************************************************
  134.  pl("# Uploads   : %-4d        Today : %d\r\n",User->Total_ULFiles,User->Period_ULFiles);
  135. //********************************************************************
  136.  pl("Bytes DL'd  : %-10ld  Today : %ld \r\n",User->Total_DLBytes,User->Period_DLBytes);
  137. //********************************************************************
  138.  pl("Bytes UL'd  : %-10ld  Today : %ld\r\n",User->Total_ULBytes,User->Period_ULBytes);
  139. //********************************************************************
  140.  GetStr(string1,19);
  141.  pl("Online Baud : %s\r\n",string1);
  142. //********************************************************************
  143.  if(User->UserBitsA & 0x00000400L) strcpy(string1,"On");
  144.  else                             strcpy(string1,"Off");
  145.  pl("Screen Clear: %s\r\n",string1);
  146. //********************************************************************
  147.  if(User->UserBitsA&0x00000008L) strcpy(string1,"On");
  148.  else                           strcpy(string1,"Off");
  149.  pl("Time Bar    : %s\r\n",string1);
  150. //********************************************************************
  151.  pl("Bytes Avail : %ld\r\n\r\n",User->Left_DLBytes);
  152. //********************************************************************
  153.  CloseStuff();
  154. }
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166. //********************
  167. //*****  DoorIO  ***** // MUST BE INCLUDED IN ALL DOORS!
  168. //********************
  169.  
  170. int DOORIO(VOID)
  171. {
  172.  struct MsgPort *HisPort;
  173.  if(send.carrier) return(0);
  174.  HisPort = FindPort(st);
  175.  if(HisPort!=NULL)
  176.   {
  177.    send.Msg.mn_Node.ln_Type = NT_MESSAGE;
  178.    send.Msg.mn_Length = sizeof(send);
  179.    send.Msg.mn_ReplyPort = MyPort;
  180.    send.carrier=0;
  181.    PutMsg((struct MsgPort *)HisPort,(struct Message *)&send);
  182.    Wait(1 << MyPort->mp_SigBit);
  183.    GetMsg(MyPort);
  184.    if(send.carrier) CloseStuff();
  185.    return(1);
  186.   }
  187.  return(0);
  188. }
  189.  
  190. //************************
  191. //*****  Door Start  *****
  192. //************************
  193.  
  194. int DoorStart(TEXT *node)
  195. {
  196.  struct MsgPort *HisPort;
  197.  send.carrier=0;
  198.  sprintf(st,"%s:TEMPEST_DOOR",node);
  199.  HisPort = FindPort(st);
  200.  if(HisPort==NULL) return (FALSE);
  201.  sprintf(MyName,"%s:DOOR_PORT",node);
  202.  MyPort = CreatePort(MyName,0L);
  203.  if(MyPort==NULL)
  204.   {
  205.    PutStr("Cant open port");
  206.    return(int)FALSE;
  207.   }
  208.  DOORIO();
  209.  User=*&send.User;
  210.  return (int)TRUE;
  211. }
  212.  
  213. //*************************
  214. //*****  Close Stuff  ***** // MUST BE INCLUDED IN ALL DOORS!
  215. //*************************
  216.  
  217. VOID CloseStuff(VOID)
  218. {
  219.  send.Command=999;
  220.  DOORIO();
  221.  while(msg=(struct MyMessage *)GetMsg(MyPort)) ReplyMsg((struct Message *)msg);
  222.  if(MyPort) DeletePort(MyPort);
  223.  exit(0);
  224. }
  225.  
  226. //*********************************
  227. //*****  GetStr (Get String)  ***** // Command 33
  228. //*********************************
  229.  
  230. VOID GetStr(TEXT *s,int opt)
  231. {
  232.  send.Command=33;
  233.  send.Value1=opt;
  234.  strcpy(s,NULL);
  235.  send.text1=s;
  236.  DOORIO();
  237. }
  238.  
  239. //*****************************
  240. //*****  PL (Print Line)  *****
  241. //*****************************
  242.  
  243. VOID pl(TEXT *fmt,...)
  244. {
  245.  va_list args;
  246.  char s[255];
  247.  va_start(args,fmt);
  248.  vsprintf(s,fmt,args);
  249.  va_end(args);
  250.  send.Command=1;
  251.  send.text1=&s[0];
  252.  DOORIO();
  253. }
  254.